package com.spark.WorCount

import org.apache.spark.{SparkConf, SparkContext}

object AccumulatorByScala {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
      .setAppName("AccumulatorByScala")
      .setMaster("local")
    val sparkContext = new SparkContext(conf)
    val Rdd=sparkContext.parallelize(Array(1,2,3,4,5,6))
//    var total=0; 是在Driver进程中执行的
//    Rdd.foreach(num=>{ //foreach产生的多个task是在Worker节点上运行的 ，无法实现累加操作
//      total+=num
//    })
//    println(total)是在Driver进程中执行的
    val accumulatorNum=sparkContext.longAccumulator;
    Rdd.foreach(num=>{
      accumulatorNum.add(num)
    })
    println(accumulatorNum.value)
  }
}
